package rmi.server;

import hbt.dao.ClienteDAO;
import hbt.dao.GeneralDAO;
import hbt.dao.ProveedorDAO;
import hbt.dao.RodamientoDAO;
import interfaz.TDAManejoDatos;

import java.rmi.Naming;
import java.rmi.registry.LocateRegistry;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import Enum.EEstadoEntidad;

import negocio.Cliente;
import negocio.CondicionOperacion;
import negocio.Financiacion;
import negocio.ItemLista;
import negocio.ListaDePrecios;
import negocio.ODV;
import negocio.PagoContado;
import negocio.Proveedor;
import negocio.Rodamiento;
import rmi.controller.RMIController;
import util.FechaUtil;

public class Server2 {

	TDAManejoDatos objetoRemoto;

	public Server2() {
		iniciar();
	}

	public static void main(String[] args) throws Exception {

		new Server2();
		
		

		Cliente c = new Cliente();
		c.setCondiciones(new HashSet<CondicionOperacion>());
		c.setCuil("88888888888");
		c.setRazonSocial("Cualquier cosa");
		c.setCondicionIVA("Resp. INscripto.");
		c.setEstado(EEstadoEntidad.activo);

		/*List<CondicionOperacion> listacond = new ArrayList<CondicionOperacion>();
		PagoContado pc = new PagoContado(10);
		listacond.add(pc);
		c.setCondiciones(listacond);*/
		ClienteDAO.getInstancia().registrar(c);

		Rodamiento r = new Rodamiento("11111", "EPW50", "SKF", "Argentina");
		Rodamiento r2 = new Rodamiento("22222", "ASD123", "SKF", "Argentina");
		Rodamiento r3 = new Rodamiento("11111", "AKA32", "ROD1", "China");
		Rodamiento r4 = new Rodamiento("33333", "QQW", "ROD1", "China");
		Rodamiento r5 = new Rodamiento("22222", "E30", "ROD1", "China");
		Rodamiento r6 = new Rodamiento("33333", "E30", "SKF", "Argentina");
		Rodamiento r7 = new Rodamiento("44444", "ABC", "Afaf", "Argentina");
		Rodamiento r8 = new Rodamiento("55555", "OOP2", "SKF", "Argentina");
		
		RodamientoDAO.getInstancia().registrar(r);
		RodamientoDAO.getInstancia().registrar(r2);
		RodamientoDAO.getInstancia().registrar(r3);
		RodamientoDAO.getInstancia().registrar(r4);
		RodamientoDAO.getInstancia().registrar(r5);
		RodamientoDAO.getInstancia().registrar(r6);
		RodamientoDAO.getInstancia().registrar(r7);
		RodamientoDAO.getInstancia().registrar(r8);
		

		Proveedor p = new Proveedor("1", "Proveedor Primero", null, null);
		PagoContado pc = new PagoContado(.1f);
		p.setEstado(EEstadoEntidad.activo);
		Financiacion f = new Financiacion(.2f, 30);

		Set<CondicionOperacion> lco = new HashSet<CondicionOperacion>();
		lco.add(pc);
		lco.add(f);

		p.setCondiciones(lco);

		ListaDePrecios lp = new ListaDePrecios(1,
				FechaUtil.getSqlDateFromString("19-04-2013"), 30, null,
				"general", p);

		ItemLista il = new ItemLista(r, 123, lp);
		
		List<ItemLista> illist = new ArrayList<ItemLista>();
		illist.add(il);
		il = new ItemLista(r2, 10, lp);
		illist.add(il);
		illist.add(new ItemLista(r4, 10, lp));
		illist.add(new ItemLista(r5, 5, lp));
		illist.add(new ItemLista(r7,55, lp));
		illist.add(new ItemLista(r8, 21, lp));
		illist.add(new ItemLista(r3, 4, lp));
		lp.setItems(illist);
		lp.setNumero(1);
		Set<ListaDePrecios> lpList = new HashSet<ListaDePrecios>();
		lpList.add(lp);
		
		p.setListaDePrecio(lpList);
		ProveedorDAO.getInstancia().registrar(p);
		/*
		{
			p = new Proveedor("2", "Proveedor Extra", null, null);
			pc = new PagoContado(.15f);
			p.setEstado(EEstadoEntidad.activo);
			f = new Financiacion(.05f, 30);

			lco = new HashSet<CondicionOperacion>();
			lco.add(pc);
			lco.add(f);

			p.setCondiciones(lco);

				lp = new ListaDePrecios(2,
					FechaUtil.getSqlDateFromString("15-07-2013"), 30, null,
					"general", p);
				

			il = new ItemLista(r, 34, lp);
			
			illist = new ArrayList<ItemLista>();
			illist.add(il);
			il = new ItemLista(r2, 3, lp);
			illist.add(il);
			illist.add(new ItemLista(r6, 53, lp));
			illist.add(new ItemLista(r5, 33.3f, lp));
			illist.add(new ItemLista(r7,25.25f, lp));
			illist.add(new ItemLista(r8, 88, lp));
			illist.add(new ItemLista(r3, 33, lp));
			illist.add(new ItemLista(r4, 65, lp));
			lp.setItems(illist);
			lp.setNumero(1);
			lpList = new HashSet<ListaDePrecios>();
			lpList.add(lp);
			
			p.setListaDePrecio(lpList);
			ProveedorDAO.getInstancia().registrar(p);
		}*/

		ODV odv = new ODV(1, "Primera ODV");
		GeneralDAO.getInstancia().registrar(odv);
		//new RMIController().crearListaDePrecio(ListaDePreciosXmlService.cargarListaDePrecios());
		

	}

	public void iniciar() {
		try {
			LocateRegistry.createRegistry(1099);
			TDAManejoDatos proveedores_controller = new RMIController();
			Naming.rebind("//localhost/rmiController", proveedores_controller);
			System.out.println("Fijado en //localhost/rmiController");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}

